Міністерство освіти і науки
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Лабораторна робота №2
з дисципліни:
“Проектування засобів захисту інформації в комп'ютерних системах та мережах”
на тему:
“Формування цифрового підпису згідно стандарту DSS”
Львів 2017
Мета: Реалізувати програму формування цифрового підпису вхідного повідомлення згідно стандарту DSS.
Теоретичні відомості
Вимоги до цифрового підпису
Аутентифікація захищає двох учасників, які обмінюються повідомленнями від
втручання деякої третьої сторони. Зазвичай проста аутентифікація не захищає
учасників один від одного, оскільки між самими учасниками можуть виникати
певного роду спори.
Наприклад, припустимо, що Роман посилає Андрію аутентифіковане
повідомлення, аутентифікація здійснюється на основі спільного секретного ключа.
Розглянемо можливі непорозуміння, які можуть при цьому виникати:
1. Андрій може підробити повідомлення і стверджувати, що воно прийшло від
Романа. Для цього достатньо просто створити повідомлення і приєднати код
аутентифікації, використовуючи спільний ключ.
2. Роман може відправити повідомлення Андрію, а потім спокійно заперечувати
факт передачі цього повідомлення. Оскільки Андрій може підробити
повідомлення, то він не зможе довести, що Роман дійсно відправляв
повідомлення.
У випадку, коли обидві сторони не довіряють один одному, необхідно дещо
більше, ніж аутентифікація на основі спільного секрету. Можливим вирішенням
подібної проблеми є використання цифрового підпису. Цифровий підпис має
наступні властивості:
1. Забезпечує можливість перевірки автора, дати та часу формування підпису.
2. Забезпечує можливість аутентифікації вмісту повідомлення під час
формування підпису.
3. Підпис перевіряється третьою стороною для розв’язання спорів.
Таким чином, функція цифрового підпису включає функцію аутентифікації. На
основі цих властивостей можна сформулювати наступні вимоги до цифрового
підпису:
1. Підпис повинен бути бітовим об'єктом, що залежить від підписаного
повідомлення.
2. Підпис повинен містити деяку унікальну інформацію відправника для
запобігання підробки або відмови.
3. Алгоритм формування цифрового підпису має бути достатньо простим.
4. Підпис повинен легко перевірятися.
5. Підробка цифрового підпису шляхом створення нового повідомлення для
існуючого цифрового підпису або створення фальшивого цифрового підпису
для деякого повідомлення має бути неможливою.
6. Цифровий підпис повинен бути достатньо компактним і не займати багато
пам’яті.
Для реалізації систем цифрового підпису використовують поєднання сильних
хеш-функцій та асиметричних криптосистем.
Завдання: в ході роботи необхідно засвоїти основні принципи побудови алгоритмів формування цифрових підписів повідомлень, розробити демонстраційну програму формування цифрового підпису вхідного повідомлення згідно стандарту DSS.
Текст програми:
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.nio.ByteBuffer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;
@SuppressWarnings("serial")
public class DSA extends JFrame implements ActionListener {
JButton jButtonCalc = new JButton("Calculate");
JButton jButtonEnter = new JButton("Form");
JButton jButtonClear = new JButton("Reset");
JButton jButtonCheck = new JButton("Verify");
JLabel jLabel1, jLabel2, jLabel3, jLabel4, jLabel5, jLabel6, jLabel7;
JTextArea jTextMessage, jTextOutput, jTextSecretKey;
long q = 0, P = 0, G = 0, k = 0, X = 0, Y = 0, r = 0, s = 0, m = 0, u1 = 0, u2 = 0, v = 0, w = 0;
byte[] mHex;
int j, temp;
int A, B, C, D, E;
int[] H = { 0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0 };
int F;
@SuppressWarnings("deprecation")
public DSA() {
super("DSA"...